package jmine.tec.script;

import java.util.List;

/**
 * Guarda logs gerados diretamente pelos scripts.
 *
 * @author seiti
 * @created May 13, 2011
 */
public interface ScriptLogger {

    /**
     * @return se a execução pode ser considerada sucesso
     */
    boolean isSuccess();

    /**
     * Loga uma falha.
     *
     * @param msg a ser logada
     */
    void fail(String msg);

    /**
     * Loga uma falha de execução.
     *
     * @param msg msg
     * @param t cause
     */
    void fail(String msg, Throwable t);


    /**
     * Loga alguma informação.
     *
     * @param msg a ser logada
     */
    void info(String msg);

    /**
     * @return os logs gerados
     */
    List<String> getLogs();

    /**
     * Concatena o argumento em um string. Utilize apenas para pequenos textos.
     * Útil para gerar uma memória de execução.
     * @param trace pequeno trecho de texto a ser logado
     */
    void trace(String trace);

    /**
     * Devolve os traces gerado.
     * @return traces
     */
    String getTraces();
}
